#利用map批量检测用户名是否符合规范=> username符合规范, username不符合规范  • 只能包含数据、字母、下划线，不以数字开头，长度在6-18之间
username=['abajihic','2454a','daeg_da5','ghjkjhghjklkjhyuikjnhbgyujnhbg','yujhyujhyuj2','12jhuangj_fc']
import re
for i in map(lambda x:print(f"{x}符合规范") if re.findall(r'^[_a-zA-Z][_0-9A-Za-z]{5,17}$',x) else print(f'{x}不符合规范'),username):
    pass

#filter把合法的用户名显示出来
print(list(filter(lambda x:re.findall(r'^[_a-zA-Z][_0-9A-Za-z]{5,17}$',x),username)))

# 匿名函数+reduce实现 1*2*3*...*n
from functools import reduce
n=int(input("请输入您想累积的数字:"))
print(reduce(lambda x,y:x*y,range(1,n+1)))

#filter函数:找出[1-100]能被3整除的数
print(list(filter(lambda x:x%3==0,range(1,101))))

# map函数:求list[1-10]各项的平方
print(list(map(lambda x:x*x,range(1,11))))

# 将列表[1,4,5,9] 转换成 '1459'的字符串
print(str(reduce(lambda x,y:x*10+y,[1,4,5,9])))

'''
有以下列表：list1=[7, -8, 5, 4, 0, -2, -5]
• 正数在前负数在后
• 整数从小到大
• 负数从大到
'''
list1=[7, -8, 5, 4, 0, -2, -5]
print(sorted(list(filter(lambda x:x>0,list1)))+sorted(list(filter(lambda x:x<0,list1)),key=lambda x:-x))

'''
这是一个字符串排序，排序规则：小写<大写<奇数<偶数
• s ='asdf234GDSdsf23' #排序:小写-大写-奇数-偶数
• 原理：先比较元组的第一个值，FALSE
'''
s ='asdf234GDSdsf235789'
d1={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
print(sorted(list(filter(lambda x:x.islower(),s)))+sorted(list(filter(lambda x:x.isupper(),s)))+sorted(list(filter(lambda x:x in d1 and d1[x]%2,s)))+sorted(list(filter(lambda x:x in d1 and not d1[x]%2,s))))